在SQLite中FROM子句功能是由函数selectColumnsFromExprList函数实现的.
selectColumnsFromExprList函数将将from后跟的表达式列表拆分,然后根据连接类型,调用连接函数,对表进行连接。
注:连接主要看on部分,from默认连接方式 只有一种,采用inner join的方式。
该函数全文如下:
static int selectColumnsFromExprList(
Parse *pParse, /*解析上下文*/
ExprList *pEList, /*来自于列名的表达式列表*/
int *pnCol, /*写列名*/
Column **paCol /*写出新的列表*/
){
sqlite3 *db = pParse->db; /*声明一个数据库连接*/
int i, j; /*循环计数*/
int cnt; /*索引添加产生唯一的名字*/
Column *aCol, *pCol; /*循环结束的结果列*/
int nCol; /*结果集中列的总数*/
Expr *p; /*一个单独结果列的表达式*/
char *zName; /*列名*/
int nName; /*存放列名的数组的长度*/
return SQLITE_OK; /*返回SQLITE_OK值*/
}